Skip to content

release: 0.38.0#111

Open
stainless-app[bot] wants to merge 50 commits into
mainfrom
release-please--branches--main--changes--next
Open

release: 0.38.0#111
stainless-app[bot] wants to merge 50 commits into
mainfrom
release-please--branches--main--changes--next

Conversation

@stainless-app
Copy link
Copy Markdown
Contributor

@stainless-app stainless-app Bot commented Apr 18, 2026

Automated Release PR

0.38.0 (2026-06-04)

Full Changelog: v0.37.0...v0.38.0

Features

Bug Fixes

  • client: add missing f-string prefix in file type error message (6dbd3ec)
  • use correct field name format for multipart file arrays (0f569cc)

Performance Improvements

  • client: optimize file structure copying in multipart requests (c28640c)

Chores

  • internal: more robust bootstrap script (d4a39dc)
  • internal: reformat pyproject.toml (19a83c3)
  • tests: bump steady to v0.22.1 (7d67d91)

This pull request is managed by Stainless's GitHub App.

The semver version number is based on included commit messages. Alternatively, you can manually set the version number in the title of this pull request.

For a better experience, it is recommended to use either rebase-merge or squash-merge when merging this pull request.

🔗 Stainless website
📚 Read the docs
🙋 Reach out for help or questions

@stainless-app
Copy link
Copy Markdown
Contributor Author

stainless-app Bot commented Apr 18, 2026

🧪 Testing

To try out this version of the SDK:

pip install 'https://pkg.stainless.com/s/hyperspell-python/a95dee2cb72e8c64be1a4523d7325848c6d9e227/hyperspell-0.37.0-py3-none-any.whl'

Expires at: Fri, 03 Jul 2026 00:31:39 GMT
Updated at: Wed, 03 Jun 2026 00:31:39 GMT

@canaries-inc
Copy link
Copy Markdown

canaries-inc Bot commented Apr 18, 2026

🐤 Canary Summary

This PR is a Python SDK release with no UI/UX changes affecting end users:

  • Version bump to 0.38.0 across all configuration files
  • Added date parameter to memories API for backend ranking/filtering
  • Updated API type definitions and test coverage
  • No user-facing UI components or changes present


View PR tests on Canary

@canaries-inc
Copy link
Copy Markdown

canaries-inc Bot commented Apr 18, 2026

🐤 Canary Proposed Tests

No testable user journeys found for this PR.

@entelligence-ai-pr-reviews
Copy link
Copy Markdown


Confidence Score: 5/5 - Safe to Merge

Safe to merge — this PR is a release bump to version 0.38.0 and the automated review found no issues across the reviewed files. No logic changes, security concerns, or correctness problems were identified, and there are no unresolved pre-existing comments to carry forward. The PR appears to be a standard version release with clean diffs.

Key Findings:

  • No review comments were generated by the automated analysis, indicating no detectable logic, security, or correctness issues in the changed files.
  • Zero critical, significant, or medium-severity issues were flagged by the heuristic analysis, consistent with a version bump or release preparation PR.
  • Coverage of 3/8 changed files leaves some files unreviewed, but for a release PR this is a low-risk gap — typically release commits touch changelogs, version files, and lock files which are low-risk by nature.

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 8517aa7 to 9e83d93 Compare April 18, 2026 08:14
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 9e83d93 to d34485e Compare April 18, 2026 08:16
@entelligence-ai-pr-reviews
Copy link
Copy Markdown

entelligence-ai-pr-reviews Bot commented Apr 18, 2026

EntelligenceAI PR Summary

This PR updates .stats.yml to synchronize metadata with the latest OpenAPI specification version.

  • Replaced percent-encoded URL path segment with a clean, decoded path in the OpenAPI spec URL
  • Updated openapi_spec_hash to match the new API specification
  • Updated config_hash to reflect the revised configuration state

Confidence Score: 3/5 - Review Recommended

Likely safe but review recommended — this PR itself is a clean metadata-only update to .stats.yml synchronizing the openapi_spec_hash and config_hash with a decoded URL path in the OpenAPI spec reference, and introduces no new code changes. However, a pre-existing unresolved concern about src/hyperspell/_utils/_utils.py remains open: when flattened_key is None and _array_suffix returns an empty string for 'repeat' or 'comma' formats, the recursive call receives flattened_key="" (empty string) instead of None, which is a correctness bug not introduced by this PR but still unresolved. Because that open comment touches logic correctness in a utility function, standard conservatism demands a review recommendation rather than a clean pass.

Key Findings:

  • The PR's own changes are purely metadata: a URL decode fix (replacing percent-encoded %2F with /) and two hash updates in .stats.yml — zero runtime impact from the changes themselves.
  • A pre-existing unresolved review comment on _utils.py L140-151 flags that passing flattened_key="" instead of None into the recursive serialization call could produce malformed query/body parameter keys for 'repeat' or 'comma' array formats, which is a genuine correctness concern in the codebase.
  • No new review comments were generated for this PR, confirming the diff itself is clean and the risk comes entirely from the inherited open issue.
Files requiring special attention
  • src/hyperspell/_utils/_utils.py
  • .stats.yml

@entelligence-ai-pr-reviews
Copy link
Copy Markdown

Releases v0.38.0 with a new date field on the memories update endpoint and a targeted deep copy utility replacing the previous full-copy approach in multipart requests.

  • Added date: str | datetime | None parameter to sync/async memories.update() and MemoryUpdateParams
  • Introduced deepcopy_with_paths in src/hyperspell/_files.py for selective container deep copying along specified key paths
  • Removed deepcopy_minimal from src/hyperspell/_utils/_utils.py and its export from src/hyperspell/_utils/__init__.py
  • Updated src/hyperspell/resources/memories.py to use deepcopy_with_paths with ['file'] path in both sync and async upload methods
  • Added 8 new tests in tests/test_files.py covering deepcopy_with_paths and mutation-safety with extract_files
  • Removed tests/test_deepcopy.py along with the deprecated utility
  • Version bumped in pyproject.toml, _version.py, and .release-please-manifest.json; OpenAPI spec hash refreshed in .stats.yml

@entelligence-ai-pr-reviews
Copy link
Copy Markdown

Releases hyperspell v0.38.0 with an API enhancement, a deep copy performance improvement, and a test dependency update.

  • Added optional date field (Union[str, datetime], ISO 8601) to MemoryUpdateParams and sync/async update methods in memories.py
  • Replaced deepcopy_minimal (removed from _utils/_utils.py and _utils/__init__.py) with the new deepcopy_with_paths utility in _files.py, which shallow-copies only containers along specified key paths
  • Updated memories.py upload methods to use deepcopy_with_paths imported from _files instead of _utils
  • Bumped @stdy/cli from 0.20.2 to 0.22.1 in scripts/mock and scripts/test
  • Updated OpenAPI spec URL/hash in .stats.yml
  • Removed tests/test_deepcopy.py; added TestDeepcopyWithPaths tests in tests/test_files.py
  • Version bumped to 0.38.0 in pyproject.toml, _version.py, and .release-please-manifest.json

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from d34485e to 7c5dc69 Compare April 22, 2026 18:30
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 7c5dc69 to 3aee06b Compare April 22, 2026 19:22
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 3aee06b to 4d6e79f Compare April 22, 2026 19:27
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 4d6e79f to 69f3e7d Compare April 22, 2026 19:39
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 69f3e7d to 2b93798 Compare April 22, 2026 19:52
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 2b93798 to 3342428 Compare April 22, 2026 23:12
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 3342428 to 5e40e1e Compare April 23, 2026 04:06
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 5e40e1e to 1929ac3 Compare April 23, 2026 22:30
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from d3ee114 to e91612a Compare May 13, 2026 15:31
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from e91612a to c6180d6 Compare May 13, 2026 19:31
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from c6180d6 to cdc503b Compare May 15, 2026 09:31
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from cdc503b to acb1042 Compare May 18, 2026 23:31
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from acb1042 to 0813011 Compare May 20, 2026 17:31
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 0813011 to 9303fa6 Compare May 20, 2026 23:31
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 9303fa6 to b90a589 Compare May 27, 2026 23:31
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from b90a589 to ceff924 Compare May 28, 2026 19:31
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from ceff924 to cb770fc Compare May 28, 2026 23:31
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from cb770fc to 37baa9e Compare May 29, 2026 03:31
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 37baa9e to 02ead4b Compare June 3, 2026 00:31
@entelligence-ai-pr-reviews
Copy link
Copy Markdown

File: src/hyperspell/types/shared/query_result.py

MAJOR CORRECTNESS New Provenance types declared in __all__ but not re-exported from shared __init__.py

src/hyperspell/types/shared/__init__.py only re-exports QueryResult, so Provenance, ProvenanceEntity, ProvenanceSource, and ProvenanceStep are inaccessible at hyperspell.types.shared.* or hyperspell.types.*, despite being listed in __all__.

from .metadata import Metadata as Metadata
from .resource import Resource as Resource
from .notification import Notification as Notification
from .query_result import QueryResult as QueryResult, Provenance as Provenance, ProvenanceEntity as ProvenanceEntity, ProvenanceSource as ProvenanceSource, ProvenanceStep as ProvenanceStep
Prompt to fix with AI

Copy this prompt into your AI coding assistant to fix this issue.

In file `src/hyperspell/types/shared/__init__.py`, line 6 currently reads:
  `from .query_result import QueryResult as QueryResult`

Four new classes — `Provenance`, `ProvenanceEntity`, `ProvenanceSource`, `ProvenanceStep` — were added to `query_result.py` and listed in its `__all__`, but they are not re-exported here. Add them to the import on line 6:
  `from .query_result import QueryResult as QueryResult, Provenance as Provenance, ProvenanceEntity as ProvenanceEntity, ProvenanceSource as ProvenanceSource, ProvenanceStep as ProvenanceStep`

Then, in `src/hyperspell/types/__init__.py` line 7, extend the `from .shared import ...` line to also include the four new names so they are accessible at the top-level `hyperspell.types` namespace.

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 02ead4b to d730648 Compare June 4, 2026 17:31
@entelligence-ai-pr-reviews
Copy link
Copy Markdown

File: src/hyperspell/types/shared/query_result.py

MAJOR CORRECTNESS Export Provenance types from shared/init.py

Provenance, ProvenanceEntity, ProvenanceSource, and ProvenanceStep are listed in __all__ here but src/hyperspell/types/shared/__init__.py only re-exports QueryResult, making the new types unreachable via from hyperspell.types import Provenance or from hyperspell.types.shared import Provenance.

from .query_result import QueryResult as QueryResult, Provenance as Provenance, ProvenanceEntity as ProvenanceEntity, ProvenanceSource as ProvenanceSource, ProvenanceStep as ProvenanceStep
Prompt to fix with AI

Copy this prompt into your AI coding assistant to fix this issue.

In file `src/hyperspell/types/shared/__init__.py`, line 6 currently reads:

    from .query_result import QueryResult as QueryResult

Replace it with:

    from .query_result import QueryResult as QueryResult, Provenance as Provenance, ProvenanceEntity as ProvenanceEntity, ProvenanceSource as ProvenanceSource, ProvenanceStep as ProvenanceStep

Then in `src/hyperspell/types/__init__.py`, line 7, extend the `from .shared import ...` line to also include `Provenance as Provenance, ProvenanceEntity as ProvenanceEntity, ProvenanceSource as ProvenanceSource, ProvenanceStep as ProvenanceStep`, so these new types are accessible via `from hyperspell.types import Provenance` as expected for a public SDK.

@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from d730648 to 4f79c22 Compare June 4, 2026 18:31
@stainless-app stainless-app Bot force-pushed the release-please--branches--main--changes--next branch from 4f79c22 to 8fb136a Compare June 4, 2026 20:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants